#include <ostream>
#include <memline.hpp>

std::ostream & operator << ( std::ostream & os, const line_t & line ) {

    const uint32_t maxIdx = wordsPerLine - 1;

    os << "0x";
    for( uint32_t wordIdx = 0; wordIdx < wordsPerLine; wordIdx++ ) {
        os << SETHEX( 16 ) << line.d[ maxIdx - wordIdx ];
    }
    return os;
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
uint64_t clog2( const uint64_t orig ) {
    if( orig == 0ULL ) { return 0ULL; }
    uint64_t v = orig;
    uint64_t count = 0ULL;
    while( v ) {
        v >>= 1;
        count++;
    }
    count--;
    const uint64_t test = ( 1ULL << count );
    if( test == orig ) {
        return count;
    }
    return count + 1ULL;
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
